// 1.3. 基础语法-三字符组
/**
 * 三字符组就是用于表示另一个字符的三个字符序列，又称为三字符序列。三字符序列总是以两个问号开头。
三字符序列不太常见，但 C++ 标准允许把某些字符指定为三字符序列。以前为了表示键盘上没有的字符，这是必不可少的一种方法。
三字符序列可以出现在任何地方，包括字符串、字符序列、注释和预处理指令。

??=  #
??/  \
??'  ^
??(  [
??)  ]
??!  |
??<  {
??>  }
??-  ~

如果希望在源程序中有两个连续的问号，且不希望被预处理器替换，这种情况出现在字符常量、字符串字面值或者是程序注释中，可选办法是用字符串的自动连接："...?""?..."或者转义序列："...?\?..."。

从Microsoft Visual C++ 2010版开始，该编译器默认不再自动替换三字符组。如果需要使用三字符组替换（如为了兼容古老的软件代码），需要设置编译器命令行选项/Zc:trigraphs

g++仍默认支持三字符组，但会给出编译警告。
*/
#include <iostream>

int main(){
  // char str = '??=';
  // char str = '??/'; // error
  // char str = '??'';
  // char str = '??(';

  // char *str = "??)";
  // char *str = "??/"; // error
  // char *str = "??!";

  // 不行，我就是想打印??< 咋了；可以呀
  // char *str = "?""?<";// 1.字符串的自动连接
  char *str = "...?\?>";// 2.转移序列
  std::cout << str << std::endl;
  return 0;
}